//定义插件，插件就是一个含有install方法的对象
const plg = {
    install(Vue, a, b) {
        //install方法第一个参数是Vue构造函数，后面的参数是Vue.use传入的自定义参数
        console.log("插件install方法...", a, b)

        //在插件中可以对Vue进行增强

        //全局过滤器，所有vue实例都可以用，必须在new Vue之前配置
        Vue.filter('mySlice', function(value){
            //截取前4位
            return value.slice(0,4)
        })

        //定义全局自定义指令，所有vue实例都可用
        Vue.directive('fbind',{
            bind(element, binding) {
                element.value = binding.value
            },
            inserted(element, binding) {
                element.focus()
            },
            update(element, binding) {
                element.value = binding.value
            }
        }) 

        //定义全局混入
        Vue.mixin({
            //混合中写data配置，会和组件原有的data配置整合
            data() {
                return {
                    x: 1,
                    y: 2,
                    name: '混合name', //如果组件data原本有name，则以组件原本的name为准
                }
            }
        })

        //在Vue原型定义一个hello方法
        Vue.prototype.hello = ()=>{alert('Vue你好啊')}
    }
}

export default plg